package com.tedu.oop.day8.user;

/**
 * 进一步测试接口的使用
 * 1.接口中无构造方法
 * 2.接口中的变量默认为静态常量
 */
public class Test_UseInter {
    public static void main(String[] args) {
        //创建多态对象测试
        /*
         问题：子类创建对象时 默认会调用父类的构造方法
         目前接口实现类的父级是一个接口，但是接口没有构造方法，
         所以实现类构造方法中的默认存在super()是调用谁的呢？
         答：Object类---所有类的顶级父类 super()调用的是Object类的无参构造
         eg:
          class InterImpl extends Object implements Inter{
         */
        Inter i=new InterImpl();
        //接口中的变量实际上都是静态常量，可以用接口名(类名)名直接调用
        System.out.println(Inter.age);//测 static静态
        //Inter.age=20; 无法将值赋给 final 变量 'age'  final

    }

}
interface Inter{
    /*接口中 构造方法*/
    //public Inter(){};  否

    //接口中的变量默认为静态常量
    //static final int age=10;
    int age=10;//默认拼接 static final

    public abstract void eat();
    void run();//默认拼接 public abstract
}

//创建接口的实现类
//class InterImpl extends Object implements Inter{
class InterImpl implements Inter{

    public InterImpl(){
        System.out.println("我是InterImpl的无参构造");
    }

    @Override
    public void eat() {
        System.out.println("吃吃吃!");
    }

    @Override
    public void run() {
        System.out.println("接口中都是抽象方法");
    }
}
